package methodMetaclass

import java.lang.reflect.Constructor
import java.time.LocalDate

//<< 添加构造器,返回一年中的第几天
Integer.metaClass.constructor << { LocalDate value->
    //构造器中不能递归调用本身,否则会内存溢出
    return new Integer(value.getDayOfYear().intValue())
}
println new Integer(LocalDate.now())
// = 覆盖方法或者构造器
Integer.metaClass.constructor ={int value->
    println "调用构造器"
    //注意不能调用new Integer(),会递归导致内存溢出
    def constructor = Integer.class.getConstructor(Integer.TYPE)
    constructor.newInstance(value)
}
println new Integer(5)


